package website.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import website.modelo.JuegoBean;
import website.util.ConexionBD;

public class JuegoDAO extends BaseDAO {

	public List<JuegoBean> obtenerJuegos() {
		Connection connection = null;
		PreparedStatement st = null;
		ResultSet rs = null;

		List<JuegoBean> juegos = null;

		try {
			connection = ConexionBD.obtenerConexion();

			String sql = "select * from servicio_juego where nom_tabla = 'juego' and estado = 1";
			st = connection.prepareStatement(sql);
			rs = st.executeQuery();
			juegos = new ArrayList<JuegoBean>();

			while (rs.next()) {
				JuegoBean juegoBean = new JuegoBean();
				juegoBean.setId(rs.getInt("idServicio_Juego"));
				juegoBean.setNombre(rs.getString("nombre"));
				juegoBean.setDescripcion(rs.getString("descripcion"));
				juegoBean.setMateriales(rs.getString("materiales"));
				juegoBean.setCostoPersona(rs.getDouble("costo"));
				juegoBean.setImagen(rs.getString("imagen_juego"));
				juegoBean.setEstado(rs.getInt("estado"));
				juegos.add(juegoBean);
			}

			rs.close();

		} catch (SQLException ex) {
			ex.printStackTrace();
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(st);
			this.cerrarConexion(connection);
		}

		return juegos;

	}

	public JuegoBean obtenerJuego(int id) {
		Connection connection = null;
		PreparedStatement st = null;
		ResultSet rs = null;

		JuegoBean juego = new JuegoBean();

		try {
			connection = ConexionBD.obtenerConexion();

			String sql = "select * from servicio_juego where idServicio_Juego = ?";
			st = connection.prepareStatement(sql);
			st.setInt(1, id);
			rs = st.executeQuery();

			while (rs.next()) {

				juego.setId(rs.getInt("idServicio_Juego"));
				juego.setNombre(rs.getString("nombre"));
				juego.setDescripcion(rs.getString("descripcion"));
				juego.setMateriales(rs.getString("materiales"));
				juego.setCostoPersona(rs.getDouble("costo"));
				juego.setImagen(rs.getString("imagen_juego"));
				juego.setEstado(rs.getInt("estado"));
			}

			rs.close();

		} catch (SQLException ex) {
			ex.printStackTrace();
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(st);
			this.cerrarConexion(connection);
		}

		return juego;

	}

	public int registrarJuego(JuegoBean juegoBean) {
		Connection connection = null;
		PreparedStatement st = null;

		int row = 0;

		try {
			connection = ConexionBD.obtenerConexion();

			String sql = "insert into servicio_juego (nombre,descripcion,materiales,costo,imagen_juego,nom_tabla) values (?,?,?,?,?,?);";
			st = connection.prepareStatement(sql);
			st.setString(1, juegoBean.getNombre());
			st.setString(2, juegoBean.getDescripcion());
			st.setString(3, juegoBean.getMateriales());
			st.setDouble(4, juegoBean.getCostoPersona());
			st.setString(5, juegoBean.getImagen());
			st.setString(6, "juego");

			row = st.executeUpdate();

		} catch (SQLException ex) {
			ex.printStackTrace();
			row = -1;
		} finally {
			this.cerrarStatement(st);
			this.cerrarConexion(connection);
		}

		return row;
	}

	public int actualizarJuego(JuegoBean juegoBean) {
		Connection connection = null;
		PreparedStatement st = null;

		int row = 0;

		try {
			connection = ConexionBD.obtenerConexion();

			String sql = "UPDATE servicio_juego SET nombre = ?,"
					+ "descripcion = ?, materiales = ?, imagen_juego = ?,"
					+ "costo = ? WHERE idServicio_Juego = ?;";

			st = connection.prepareStatement(sql);
			st.setString(1, juegoBean.getNombre());
			st.setString(2, juegoBean.getDescripcion());
			st.setString(3, juegoBean.getMateriales());
			st.setString(4, juegoBean.getImagen());
			st.setDouble(5, juegoBean.getCostoPersona());
			st.setInt(6, juegoBean.getId());

			row = st.executeUpdate();

		} catch (SQLException ex) {
			ex.printStackTrace();
			row = -1;
		} finally {
			this.cerrarStatement(st);
			this.cerrarConexion(connection);
		}

		return row;
	}

	public int eliminarJuego(int id) {
		Connection connection = null;
		PreparedStatement st = null;

		int row = 0;

		try {
			connection = ConexionBD.obtenerConexion();

			String sql = "UPDATE servicio_juego SET estado = 0 WHERE idServicio_Juego = ?;";

			st = connection.prepareStatement(sql);
			st.setInt(1, id);

			row = st.executeUpdate();

		} catch (SQLException ex) {
			ex.printStackTrace();
			row = -1;
		} finally {
			this.cerrarStatement(st);
			this.cerrarConexion(connection);
		}

		return row;
	}

}
